Pest’датый фреймворк для тестирования

Забанов Александр

О себе

Забанов Александр

Кто пишет тесты?

У кого больше 50%?

Почему люди не пишут тесты

Для чего нужны автотесты

Какие у нас есть инструменты?

PHPUnit

Популярный фреймворк для модульного тестирования на языке PHP

selenium -> playwright

PEST

Pest

"Фреймворк для тестирования, ориентированный на простоту и тщательно разработанный для того, чтобы вернуть радость тестирования на PHP."
© Контент-менеджер Pest

Сообщество Pest

Основные фишки Pest

Синтаксическйи сахар


PHPUnit

Pest

Плагины для редакторов кода

Наименование

Раньше: [ТестирумыйМетод]_[Сценарий]_[ОжидаемыйРезультат]
Пример:

Сейчас: [Любой текст]
Пример:

Группы

Для разделения единиц поведения

Запуск

Skip

Если вам нужно временно отключить тест.

Хуки

Mocking

Нужно будет установить библиотеку для моков. Pest рекомендует mockery

Higher Order Testing

Удобный билдер, в котором доступны как методы Pest так и PHPUnit

субъект-действие-объект

Другие виды тестирования в Pest

Другие виды тестирования в Pest

Архитектурные тесты

Проверяют, соответствует ли ваше приложение набору архитектурных правил

Архитектурные тесты: Пресеты

Уже готовые наборы правил

Стресс-тестирование

*Доп плагин с К6 под капотом

Флаги
--duration
--concurrenc
Http-флаги (--patch --put --post --options --get)

Стресс-тестирование: Функции

Стресс-тестирование: Результаты

Покрытие

Type Coverage

Mетрика, используемая для измерения процента типизации кода
Ставим плагин pestphp/pest-plugin-type-coverage

Mutation Testing

Требуется XDebug 3.0+ или PCOV .

Snapshot


При первом запуске этого теста он создаст файл снимка - tests/.pest/snapshots с содержимым ответа. При следующем запуске теста он сравнит ответ с файлом снимка

Snapshot: Для динамических данных

Управление командой
(TODOS)

Файл конфигурации Pest.php


Пример конфигурации для встроенной функции интеграции в таск менеджер

Управление командой(TODOS)

Тесты можно использовать для отслеживания хода выполнения ваших todos/задач

Назначение задач

PR

Issue

Note

Все вместе

Миграция с PHPUnit

Стратегия миграции с PHPUnit

  1. Оставляем старые PHPUnit-тесты как есть, рядом пиши новые на Pest
  2. Конвертируем PHPUnit-тесты в Pest

Должен жить лишь один

Обратной совместимости нет

Миграция с PHPUnit

  1. Ставим pestphp/pest-plugin-drift
  2. Запускаем
  3. Дрифтим

Миграция с PHPUnit

Работает только на 2ой версии Pest

Запуск

Запуск однопоточного тестирования

Запуск параллельного тестирования

Скорость

PhpUnit: 00:02.51

Скорость

Pest: 00:02.89

Выводы

Недостатки Pest

Когда стоит\не стоит ;( использовать Pest

Когда стоит использовать Pest:

Когда стоит\не стоит ;( использовать Pest

Когда не стоит использовать Pest:

Наш опыт

Благодарности

Вопросы?

 ______  __                                        __
/\__  _\/\ \                                      /\ \
\/_/\ \/\ \ \___       __          __     ___     \_\ \
   \ \ \ \ \  _ `\   /'__`\      /'__`\ /' _ `\   /'_` \
    \ \ \ \ \ \ \ \ /\  __/     /\  __/ /\ \/\ \ /\ \L\ \
     \ \_\ \ \_\ \_\\ \____\    \ \____\\ \_\ \_\\ \___,_\
      \/_/  \/_/\/_/ \/____/     \/____/ \/_/\/_/ \/__,_ /